$titre, 'id_rubrique'=>$id_rubrique,
'texte'=>$texte, 'statut'=>$import_statut, 'id_secteur'=>$id_secteur,
'date'=> $lsDate, 'accepter_forum'=>$accepter_forum, 'lang'=>$lang, 'url_site'=>$url));
// lier article et site
sql_insertq( 'spip_articles_syndic', array('id_article'=>$id_article, 'id_syndic'=>$id_syndic));
// gestion auteur
$auteurs= explode(", ",$a['lesauteurs']);
foreach ($auteurs as $k => $auteur) {
if ($current_id_auteur = rssarticle_get_id_auteur($auteur))
sql_insertq( 'spip_auteurs_liens', array('id_auteur'=>$current_id_auteur, 'id_objet'=>$id_article, 'objet'=>'article'));
}
// tags a convertir en documents distants
$doc_distants = extraire_enclosures($tags);
foreach ($doc_distants as $k=>$doc_distant) {
$infos = recuperer_infos_distantes($doc_distant);
if ($infos['extension']) {
$ext = $infos['extension'];
$taille = $infos['tailles'];
$row = sql_fetsel("inclus", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"); // extension autorisee ?
if ($row) {
$id_document = sql_insertq( 'spip_documents', array(
'extension'=>$ext,
'date'=> $lsDate,
'fichier'=> $doc_distant,
'taille'=> $taille,
'mode' => 'document',
'distant' => 'oui'));
sql_insertq( 'spip_documents_liens', array(
'id_document' =>$id_document,
'id_objet'=> $id_article,
'objet'=> 'article',
'vu'=> 'non'));
}
}
}
// logo
if ($copie_logo) {
if ($logo_site = inc_chercher_logo_dist($id_syndic,"id_syndic")) {
$logo_article = "arton$id_article.".$logo_site[3];
@copy($logo_site[0],_DIR_LOGOS."$logo_article");
}
}
$log_c++;
$log .= "\n - $titre";
// on "depublie" l'article syndique qui vient d'etre copie
sql_update("spip_syndic_articles", array('statut' => '"refuse"'), "id_syndic_article=$id_syndic_article");
// Mise à jour des dates de rubriques après création d'un article dedans
if ($id_article) {
if (function_exists('calculer_rubriques'))
calculer_rubriques();
if (function_exists('calculer_langues_rubriques'))
calculer_langues_rubriques();
if (function_exists('propager_les_secteurs'))
propager_les_secteurs();
}
} // test doublons
}
} // FIN PILE
// log et alerte email
$log .= "\n\n---------\nPlugin Copie RSS en Articles: $log_c articles copies\n";
spip_log($log);
$log .= $GLOBALS['meta']['adresse_site']."/ecrire/?exec=accueil";
if ($email_alerte && $email_suivi !="" && $log_c > 0)
envoyer_mail($email_suivi,"Copie RSS en Articles", $log);
// maintenance generale
// mode auto: on efface les syndic_articles de plus de 2 mois pour soulager le systeme (cf genie/syndic)
// attention: on efface sur l'ensemble des sites syndiques ss tenir compte de l'option
if ($mode_auto) sql_delete('spip_syndic_articles', "maj < DATE_SUB(NOW(), INTERVAL 2 MONTH) AND date < DATE_SUB(NOW(), INTERVAL 2 MONTH)");
return 1;
}
//
// recupere id d'un auteur selon son nom sinon le creer
function rssarticle_get_id_auteur($nom) {
if (trim($nom)=="")
return false;
if ($row = sql_fetsel(array("id_auteur"),"spip_auteurs","nom=".sql_quote($nom)))
return $row['id_auteur'];
// auteur inconnu, on le cree ...
return sql_insertq('spip_auteurs',array('nom'=>$nom,'statut'=>'1comite'));
}
//
// extraire les documents taggues enclosure
// voir http://doc.spip.org/@afficher_enclosures
function extraire_enclosures($tags) {
$s = array();
foreach (extraire_balises($tags, 'a') as $tag) {
if (extraire_attribut($tag, 'rel') == 'enclosure'
AND $t = extraire_attribut($tag, 'href')) {
$s[] = $t;
}
}
return $s;
}
/**
*
* Nettoyer l'utf-8 et ses accents
*
**/
function clean_utf8($t) {
if (!preg_match('!\S!u', $t))
$t = preg_replace_callback(',([0-9a-f]+);,i', 'utf8_do', utf8_encode(utf8_decode($t)));
return $t;
}
//passe le html en SPIP
//repris de memo.php, merci
function html2spip($lapage){
$lapage=clean_utf8($lapage);
// remettre les double quotes casé par texte_backend
$lapage = str_replace('"','"',$lapage);
// PRETRAITEMENTS
$lapage = str_replace("\n\r", "\r", $lapage); // echapper au greedyness de preg_replace
$lapage = str_replace("\n", "\r", $lapage);
// itals
$lapage = preg_replace(",<(i|em)( [^>\r]*)?".">(.+)\\1>,Uims", "{\\3}", $lapage);
// gras (pas de {{ pour eviter tout conflit avec {)
$lapage = preg_replace(",<(b|h[4-6])( [^>]*)?".">(.+)\\1>,Uims", "@@b@@\\3@@/b@@", $lapage);
$lapage = preg_replace(",]*)?".">(.+),Uims", "@@b@@\\2@@/b@@", $lapage);
// entites
include_spip('inc/charsets');
$lapage = html2unicode($lapage, true); //secure?
// liens avec possibilités de non fermeture du tag
$lapage = preg_replace(",]*href=[^<>]*(http[^<>]*)[^<>]>(.*?)<,uims", "[\\2->\\1] <", $lapage);
// images (cf ressource)
$lapage = preg_replace(",]*src=[^<>]*(http[^<>'\"]*)[^<>]*>,uims","[img]\\1[//img]", $lapage);
// intertitres
$lapage = preg_replace(",<(h[1-3])( [^>]*)?".">(.+)\\1>,Uims", "\r{{{ \\3 }}}\r", $lapage);
// tableaux
$lapage = preg_replace(",]*)?".">,Uims", "
\r", $lapage);
$lapage = preg_replace(",]*)?".">,Uims", " | ", $lapage);
// POST TRAITEMENT
$lapage = str_replace("\r", "\n", $lapage);
// SUPPRIME LES TAGS
if (eregi("(.*)", $lapage, $regs))
$titre = textebrut($regs[1]);
$lapage = textebrut($lapage);
// Suite tableaux
$lapage = preg_replace(",\n[| ]+\n,", "", $lapage);
$lapage = preg_replace(",\n[|].+?[|].+?[|].+,", "\\0|\r", $lapage);
// retablir les gras
$lapage = preg_replace(",@@b@@(.*)@@/b@@,Uims","{{\\1}}",$lapage);
//retablir les images pour les lire avec le plugin ressource
$lapage = preg_replace('#\[img\](.*)\[\//img\]#Umis', "<$1>", $lapage);
//nettoyer les "] qui dépassent parfois
$lapage = preg_replace(",\"\],uims", "]", $lapage);
return $lapage;
}
?>